package com.etc.service.impl;
/*
 * 文件名：com.etc.service.impl.UserServiceImpl
 * 描述：用户操作的service接口的实现类
 * 作者：黄志鹏
 * 时间：2019/5/24 9:28
 */

import com.etc.dao.UserDao;
import com.etc.entity.User;
import com.etc.entity.UserAddress;
import com.etc.service.UserService;
import com.etc.utils.MD5Util;
import com.etc.utils.PageData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;


import java.util.Date;
import java.util.List;

@Service
public class UserServiceImpl implements UserService {

    //注入用户操作的持久层对象
    @Autowired
    private UserDao userDao;

    /**
     * 根据手机号查询数据库中是否存在用户
     * @param userPhone 要查询的手机号
     * @return 用户是否存在
     */
    @Override
    public User getUserByUserPhone(String userPhone) {

        //调用持久层对象根据userphone查询用户
       User user =  userDao.getUserByUserPhone(userPhone);

           return user;
    }

    /**
     * 用户注册的service层方法
     * @param user
     * @return
     */
    @Override
    public boolean saveUser(User user) {

        //将密码进行md5加密
        user.setUserpassword(MD5Util.getEncodeByMd5(user.getUserpassword()));

        //设置注册时间
        user.setUserregisday(new Date());

        return userDao.saveUser(user);
    }


    /**
     * 用户登录查询用户信息的方法
     * @param userphone  用户的手机号
     * @param userpassword 用户的密码
     * @return 查询到的用户信息
     */
    @Override
    public User getUserByUserPhoneAndUserPassword(String userphone, String userpassword) {
        String iuserpassword =  MD5Util.getEncodeByMd5(userpassword);

        return userDao.getUserByUserPhoneAndUserPassword(userphone,iuserpassword);
    }

    /**
     * 根据手机号修改密码的方法
     * @param userphone 用户手机号
     * @param userpassword 用户密码
     * @return
     */
    @Override
    public boolean updateUserPasswordByUserPhone(String userphone, String userpassword) {
        String iuserpassword = MD5Util.getEncodeByMd5(userpassword);
        return userDao.updateUserPasswordByUserPhone(userphone,iuserpassword);
    }
     //注册数量
    @Override
    public int selectCountUser() {
        return userDao.selectCountUser();
    }
     //这周注册量
    @Override
    public int selectDay() {
        return userDao.selectDay();
    }

    /**
     * 分页模糊查询
     * @param page 开始
     * @param pageSize 页条数
     * @param content 模糊查询
     * @return
     */
    @Override
    public PageData<User> getUserByPage(Integer page, Integer pageSize, String content) {
        // 起始位置
        Integer start =(page - 1) * pageSize;

        // 查询需要返回的数据
        List<User> data = userDao.selectUserByPage(start, pageSize, content);
        int count = userDao.selectCount(content);
        PageData<User> pd = new PageData<>(data, count, pageSize, pageSize);
        return pd;
    }

    /**
     * y用户数量
     * @param content
     * @return
     */
    @Override
    public int userCount(String content) {
        return userDao.selectCount(content);
    }

    /**
     * 禁用用户
     * @param userid
     * @return
     */
    @Override
    public boolean banByPrimaryKey(Integer userid) {

        return userDao.banByPrimaryKey(userid);
    }

    @Override
    public boolean qiByPrimaryKey(Integer userid) {

        return userDao.qiByPrimaryKey(userid);
    }

}
